package ksv.cron.v1;

import ksv.cron.CronContext;
import ksv.cron.CronCst;
import ksv.cron.bean.SysCron;

import java.time.LocalDateTime;
import java.util.concurrent.Delayed;

/**
 * @创建人 wsdc
 * @时间 2021/1/31
 * @描述 $
 */
public interface ICron extends Delayed{
    SysCron sysCron();

    /**
     *  生成下一个 context
     *  <li>    如果返回null，则表示周期已经结束了 可以移除了 同时要标记为结束状态
     */
    CronContext nextContext();

    CronContext currentContext();

    LocalDateTime callTime();

    CronContext next();

    default boolean shouldCheck(){
        return true;
    }

    default String status(){
        return CronCst.CronTimeStatus.NORMAL;
    }
}
